Mybatis入门案例【超详细】 您所在的位置:网站首页 Mybatis 映射properties Mybatis入门案例【超详细】

Mybatis入门案例【超详细】

#Mybatis入门案例【超详细】| 来源: 网络整理| 查看: 265

目录

前言

一、查询所有用户

1. 持久层添加查询所有方法

2. 在UserMapper.xml映射文件添加查询语句

3. 测试方法

4. 运行结果

二、MyBatis核心对象及工作流程

1. MyBatis核心对象

2. MyBatis工作流程

3. 使用SqlSession操作数据库

三、添加其他常见方法

1. Mybatis新增用户

2. Mybatis用户更改

3. Mybatis删除用户

4. Mybatis根据用户id查询

前言

在原来上一篇的基础上,我们需要新建一个数据库mybatis,在该数据库下新建一个user表,并插入数据,如下图所示!

        还要新建一个实体类User

package com.mybatisstudy.pojo; public class User { private int id; private String username; private String sex; private String address; public User(String programmer, String man, String shangHai) { this.username = programmer; this.sex = man; this.address = shangHai; } public User(int i, String programmer_1, String woman, String shenzhen) { this.id = i; this.username = programmer_1; this.sex = woman; this.address = shenzhen; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User[ " + "id=" + id + ", username='" + username + '\'' + ", sex='" + sex + '\'' + ", address='" + address + '\'' + " ]"; } }一、查询所有用户1. 持久层添加查询所有方法// 查询所有用户 List findAll();2. 在UserMapper.xml映射文件添加查询语句 select * from user 3. 测试方法

        在test包下新建一个测试类TestUserMapper.java,注意测试类需要插入一个Junit依赖

import com.mybatisstudy.mapper.UserMapper; import com.mybatisstudy.pojo.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.InputStream; import java.util.List; public class TestUserMapper { InputStream is = null; SqlSession session = null; UserMapper userMapper = null; //前置方法,不必重复代码 @Before public void before() throws Exception { System.out.println("前置方法执行·············"); // (1)读取核心配置文件 is = Resources.getResourceAsStream("SqlMapConfig.xml"); // (2)创建SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); // (3)SqlSessionFactoryBuilder对象获取SqlSessionFactory对象 SqlSessionFactory factory = builder.build(is); // (4)SqlSessionFactory对象获取SqlSession对象 session = factory.openSession(); // (5)SqlSession对象获取代理对象 userMapper = session.getMapper(UserMapper.class); } //后置方法,释放资源 @After public void after() throws Exception { System.out.println("后置方法执行·············"); session.close(); is.close(); } // 测试查询所有用户的方法 @Test public void testFindAll() throws Exception{ // 代理对象执行方法 List all = userMapper.findAll(); all.forEach(System.out::println); }4. 运行结果

        OK,下面我们来详细解释一下前置方法,前置方法也是MyBatis核心对象和工作流程

二、MyBatis核心对象及工作流程1. MyBatis核心对象

SqlSessionFactoryBuilder

SqlSession工厂构建者对象,使用构造者模式创建SqlSession工厂对象。

SqlSessionFactory

SqlSession工厂,使用工厂模式创建SqlSession对象。

SqlSession

该对象可以操作数据库,也可以使用动态代理模式创建持久层接口的代理对象操作数据库。

Mapper

持久层接口的代理对象,他具体实现了持久层接口,用来操作数据库。

2. MyBatis工作流程

创建SqlSessionFactoryBuilder对象

SqlSessionFactoryBuilder对象构建了SqlSessionFactory对象: 构造者模式

SqlSessionFactory对象生产了SqlSession对象:工厂模式

SqlSession对象创建了持久层接口的代理对象:动态代理模式

代理对象操作数据库

3. 使用SqlSession操作数据库

        除了代理对象能够操作数据库,SqlSession也能操作数据库。只是这种方式在开发中使用的较少,接下来我们使用SqlSession操作数据库:

// SqlSession直接操作数据库    List users = session.selectList("com.itbaizhan.mapper.UserMapper.findAll");    users.forEach(System.out::println);

         这样也可以的,上面的是我们用的是调用接口方法执行。

三、添加其他常见方法1. Mybatis新增用户

持久层添加新增用户方法

// 添加用户 void add(User user);

映射文件新增标签

insert into user(username,sex,address) values(#{username},#{sex},#{address})

在测试类新增方法测试一下

        注意:这里一定要执行提交事务方法

// 测试新增用户方法 @Test public void testAdd() throws Exception { User user = new User("programmer","man","ShangHai"); userMapper.add(user); //提交事务 session.commit(); }2. Mybatis用户更改

持久层添加用户信息更改方法

// 更新用户 void update(User user);

映射文件新增标签

update user set username = #{username}, sex = #{sex}, address = #{address} where id = #{id}

在测试类新增方法测试一下

        注意:这里一定要执行提交事务方法

// 测试更新用户方法 @Test public void testUpdate() throws Exception{ User user = new User(7,"programmer_1","woman","Shenzhen"); userMapper.update(user); //提交事务 session.commit(); }3. Mybatis删除用户

持久层添加删除用户方法

// 删除用户 void delete(int userId);

映射文件新增标签

delete from user where id = #{id}

在测试类新增方法测试一下

        注意:这里一定要执行提交事务方法

// 测试删除用户方法 @Test public void testDelete() throws Exception{ int userId = 7; userMapper.delete(userId); // 提交事务 session.commit(); }4. Mybatis根据用户id查询

持久层添加删除用户方法

// 根据ID查询用户 User findById(int userId);

映射文件新增标签

select * from user where id = #{id}

在测试类新增方法测试一下

        注意:这里一定要执行提交事务方法

// 测试根据用户查询Id @Test public void testFindById() throws Exception{ int userId = 1; User user = userMapper.findById(userId); System.out.println(user); }

        OK,本次Mybatis入门案例就写到这里了,感谢大家的认真浏览到这里的小伙伴,如果觉得觉得对你有帮助就三连支持一下吧!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有